.TITLE TTYL .IDENT /06.00/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; ; 27-JAN-78 PETER WANNHEDEN ; ; PREVIOUSLY MODIFIED BY: ; ; P. WANNHEDEN ; C. F. SPITZ ; D. R. DONCHIN ; T. LEKAS ; ; ; MODIFIED FOR RSX-11M-PLUS V4.1 BY: ; ; ; L. KOGAN 20JAN-88 06.00 ; ; LK731 -- CLEAR DSR SUPPORT BITS ; ; ;+ ; CONTROLLER-DEPENDENT ROUTINES FOR DL-11. ;- ; ; .IIF DF R$$PRO .IIF NDF D$$C11 .ERROR ;R$$PRO REQUIRES D$$C11 .IF DF D$$L11 .IF DF R$$MPL .MCALL KRBDF$ KRBDF$ ;DEFINE KRB SYMBOLS .ENDC ;R$$MPL .MCALL HWDDF$,UCBDF$ HWDDF$ ;DEFINE HARDWARE SYMBOLS UCBDF$ ;DEFINE UCB SYMBOLS .PSECT MAP5 ; ; ; EQUATED SYMBOLS ; ; DL-11 REGISTER DEFINITIONS ; RCSR = 0 ;RECEIVER STATUS REG. RBUF = 2 ;RECEIVER DATA BUFFER REG. XCSR = 4 ;TRANSMITTER STATUS REG. XBUF = 6 ;TRANSMITTER DATA BUFFER REG. ; ; PROFESSIONAL 300 SERIES PRINTER PORT DEFINITIONS ; PDBUF = 173400 ;RECEIVER DATA BUFFER REGISTER PSTS = 173402 ;STATUS REGISTER PMODE = 173404 ;MODE REGISTER PCMND = 173406 ;COMMAND REGISTER ; ; PROFESSIONAL 300 SERIES INTERRUPT CONTROLLER DEFINITIONS ; ICCSR = 173202 ;INTERRUPT CONTROLLER 0 CSR REGISTER PRINTR = 5 ;PRINTER RECEIVER INTERRUPT REQUEST LEVEL PXINTR = 6 ;PRINTER TRANSMITTER INTERRUPT REQUEST LEVEL CLSIMR = 50 ;CLEAR SINGLE IMR BIT COMMAND STSIRR = 130 ;SET SINGLE IRR BIT COMMAND ; ; ;+ ; YLRESX - RESUME OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; S1.CTS 0 ;- ; ; YLRESX::BIS #100,XCSR(R3) ;;;SET XMIT INTERRUPT ENABLE .IF DF R$$PRO ; ; FOR THE PROFESSIONAL 300 SERIES MACHINES BOTH METHODS OF EFFECTING ; THE INTERRUPT ENABLE BITS ARE LEFT IN PLACE SO THAT THE SYSTEM WILL ; WORK ON BOTH THE REAL HARDWARE AND THE BRIDGE SYSTEM. THE BRIDGE ; SYSTEM CONSISTS OF AN 11/23-PLUS SYSTEM WITH AN INTERFACE ON IT TO ; THE CTI BUS. ; ; ON THE REAL HARDWARE THE BIS #100... IS IGNORED. ON THE BRIDGE ; SYSTEM THE FOLLOWING TWO INSTRUCTIONS ARE IGNORED BECAUSE THEY WRITE ; INTO THE BOOT ROM ; MOV #CLSIMR!PXINTR,ICCSR ;;;SET XMIT INTERRUPT ENABLE ;;;FOR PRINTER PORT MOV #STSIRR!PXINTR,ICCSR ;;;CAUSE ANY PENDING INTERRUPTS TO OCCUR .ENDC ;R$$PRO ; ; ;+ ; YLABOX - ABORT OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; U.TOC 0 ; U.TTOC 0 ; ; YLSTOX - STOP (SUSPEND) OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; S1.CTS 1 ;- ; ; YLABOX:: YLSTOX:: .IF NDF D$$LMD YLMTIM:: .ENDC ;D$$LMD RETURN ;;; ; ; ;+ ; YLPWUP - POWER-UP. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; U.STS SET UP FOR LOCAL LINE: ; US.CRW 0 ; US.DSB 0 ;- ; ; .ENABL LSB .IF DF R$$CON YLCONL:: YLCPUP::SEC ;SET CARRY BIT FOR CONTROLLER OPERATIONS YLUONL:: YLUPUP:: .IFF YLPWUP:: .ENDC ;R$$CON MOVB RBUF(R3),R0 ;EMPTY RBUF .IF DF D$$LMD BIS #140,@R3 ;ENABLE DATASET AND RECEIVE INTERRUPTS .IFF ;D$$LMD BIS #100,@R3 ;ENABLE RECEIVE INTERRUPTS .IF DF R$$PRO MOV #CLSIMR!PRINTR,ICCSR ;;;ENABLE RECEIVE INTERRUPTS ;;;FOR PRINTER PORT .ENDC ;R$$PRO RETURN ;RETURN .IFT ;D$$LMD BCS 10$ ;RETURN IF PERFORMING A CONTROLLER OPERATION BIT #U2.RMT,U.CW2-U.TSTA(R5) ;REMOTE LINE? BEQ 10$ ;N - RETURN BISB #US.CRW,U.STS-U.TSTA(R5) ;SET WAITING FOR CARRIER FLAG ; ; ;+ ; YLMTIM - MODEM TIMER. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ;- ; ; YLMTIM::CALL LOCKI ;LOCK OUT INTERRUPTS CALL HLMTIM ;;;CALL COMMON MODEM TIMER ROUTINE BEQ 5$ ;;;IF EQ Z-BIT SET - DROP DTR BISB #6,@R3 ;;;ASSERT DTR AND RTS RETURN ;;; 5$: BICB #17,@R3 ;;;CLEAR DTR, RTS, READER ENABLE AND ;;;SECONDARY XMIT 10$: RETURN ;;;RETURN TO COROUTINE THAT HANGS ;;;UP LINE IF NECESSARY .IFTF ;D$$LMD .IF DF R$$CON YLCOFF:: YLUOFF:: CLR @R3 ;DISABLE THE WORLD .IIF DF R$$PRO .ERROR ;R$$CON SHOULD NOT BE DEFINED FOR ;PRO 300 SERIES MACHINES RETURN .ENDC ;R$$CON ; ; ;+ ; INPUT INTERRUPT SERVICE ROUTINE. ;- ; ; .IF DF R$$MPL $YLINP:: TTSET$ YL ;;;SAVE R2, R3 AND SET UP: ;;; R3 = CSR ADDRESS ;;; R4 = KRB ADDRESS MOV K.OWN(R4),R5 ;;;GET UCB ADDRESS .IFF ;R$$MPL $DLINP:: .IF EQ D$$L11-1 CLR R4 ;;;SET UP DL CONTROLLER INDEX .ENDC TTSET$ DL ;;;SAVE R2,R3 AND SET UP ;;; R3 = CSR ;;; R4 = ADDRESS OF UCB LIST MOV (R4),R5 ;;;GET UCB ADDRESS .ENDC ;R$$MPL ADD #U.TSTA,R5 ;;;POINT TO U.TSTA .IFT ;D$$LMD MOV @R3,R2 ;;;SAVE INTERRUPT STATUS BPL 20$ ;;;NO DATASET INTERRUPT - JUMP MOV R2,R4 ;;;GET A COPY ASL R4 ;;;GET RING BIT IN BIT 15 SWAB R4 ;;;GET IT IN BIT 7 BIC #140000,R4 ;;;DL11 DOES NOT SUPPORT DSR MOV R2,-(SP) ;;;SAVE R2 DESTROYED BY MODISR ROUTINE CALL MODISR ;;;CALL COMMON MODEM ISR BVC 16$ ;;;NO SPECIAL ACTION NEEDED - JUMP BCS 15$ ;;;DROP DTR - JUMP BISB #6,@R3 ;;;ENABLE DTR AND RTS BR 16$ ;;;AND LOOK IF FURTHER PROCESSING IS NEEDED 15$: BICB #6,@R3 ;;;CLEAR DTR AND RTS 16$: MOV (SP)+,R2 ;;;RESTORE R2 20$: TSTB R2 ;;;RECEIVER INTERRUPT? BPL 10$ ;;;N - EXIT .ENDC ;D$$LMD .IF DF R$$PRO ASSUME H2.BRG,100000 TST $HFMSK+2 ;;;IS THIS A PRO BRIDGE SYSTEM? BMI 30$ ;;;IF NE YES MOV PDBUF,R2 ;;;GET RECEIVED CHARACTER BR 40$ ;;;AND CONTINUE .IFTF ;R$$PRO 30$: MOV RBUF(R3),R2 ;;;GET RECEIVED CHARACTER .IFT ;R$$PRO 40$: ;;;REFERENCE LABEL .ENDC ;R$$PRO CALLR ICHAR1 ;;;DO COMMON INPUT CHARACTER ;;;PROCESSING AND RETURN ; .DSABL LSB ; ; ;+ ; OUTPUT INTERRUPT SERVICE ROUTINE ;- ; ; .IF DF R$$MPL $YLOUT:: TTSET$ YL ;;;SAVE R2, R3 AND SET UP: ;;; R3 = CSR ADDRESS ;;; R4 = KRB ADDRESS MOV K.OWN(R4),R5 ;;;GET UCB ADDRESS .IFF ;R$$MPL $DLOUT:: .IF EQ D$$L11-1 CLR R4 ;;;SET UP DL CONTROLLER INDEX .ENDC TTSET$ DL ;;;SAVE R2,R3 AND SET UP ;;; R3 = CSR ;;; R4 = ADDRESS OF UCB LIST MOV (R4),R5 ;;;GET UCB ADDRESS .ENDC ;R$$MPL ADD #U.TSTA,R5 ;;;POINT TO U.TSTA ; ; ;+ ; YLSTAX - START OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; U.TOP+2 BUFFER POINTER ; U.TOC BYTE COUNT ;- ; ; YLSTAX::MOV #100,R2 ;;;GET BITMASK FOR XMIT INTERRUPT BIS R2,XCSR(R3) ;;;ENABLE XMIT INTERRUPT .IF DF R$$PRO MOV #CLSIMR!PXINTR,ICCSR ;;;ENABLE XMIT INTERRUPT FOR PRINTER PORT .ENDC ;R$$PRO CALLR OUTISR ;;;DO COMMON OUTPUT INTERRUPT PROCESSING .ENDC ;D$$L11 ; ; .END